TSpinDateEdit and TDBSpinDateEdit Version 1.5d (c) copyright 1997 by W.Braun. All rights reserved. Borland Delphi 1-3 und C++ Builder VCL-Komponenten Liebe Entwickler und Anwender , mit diesen Komponenten können Sie alle Datumsein-/ausgabefelder in Ihrer Applikation abdecken und erreichen so ein einheitlich formatiertes Erscheinungsbild Ihrer Anwendung. Die Komponente unterstützt internationale und Benutzer Einstelllungen der Windowssystem Datumsparameter. Die manuelle Eingabe des Datums ist sehr ausgefeilt und fängt automatisch alle Falscheingaben ab. Bei Bedarf können Sie einen Kalender hinzufügen, der dann einfach per Doppelklick oder durch Klick auf das Symbol angezeigt wird. Zusätzlich besitzen diese Komponenten die Möglichkeit mit +/- oder bei eingeschaltetem Spinsymbol per Klick auf das jeweilige Symbol das Datum um eine freidefinierbare Anzahl der Tage zu erhöhen/vermindern. Ich hoffe diese Komponenten helfen euch bei der Arbeit und machen diese etwas leichter. Inhalt 1. Installation 2. Eigenschaften 3. Funktiosbeschreibung 4. Registrierung 5. Neu 6. Glossar 7. WARRANTY 8. Shareware 9. Order Form >>1. Installation I. Delphi 1-2 Bitte benutzen Sie für die 16-Bit Version die Datei "DATE_16.ZIP" und für die 32-Bit Version die Datei "DATE_32.ZIP". 1. Kopieren Sie bitte die Dateien DATEED.DCU,DATEED.DFM,DATEED.DCR und DATEED.RES in ein beliebiges von Ihnen bevorzugtes Verzeichniss, z.B. C:\DELPHI\Z_COMP 2. Wählen Sie im Delphi-Menü Optionen | Komponenten installieren 3. Klicken Sie auf Hinzufügen 4. Geben Sie jetzt das Verzeichniss und DATEED.DCU ein, z.B. C:\DELPHI\Z_COMP\DATEED.DCU 5. Klicken Sie jetzt OK 6. Nochmal OK II. Delphi 3 Bitte benutzen Sie die Datei "DATE32_3.ZIP" 1. Kopieren Sie bitte die Dateien DATEED.DCU,DATEED.DFM,DATEED.DCR und DATEED.RES in ein beliebiges von Ihnen bevorzugtes Verzeichniss, z.B. C:\DELPHI\Z_COMP 2. Wählen Sie im Delphi-Menü Komponenten | Komponenten installieren 3. Wählen sie ihre bevorzugte package ( default dclusr30dpk) und klicken Sie auf Hinzufügen 4. Geben Sie jetzt das Verzeichniss und DATEED.DCU ein, z.B. C:\DELPHI\Z_COMP\DATEED.DCU 5. Klicken Sie jetzt Compilieren 6. Folgen Sie den Anweiseungen bis zur Meldung, daß TSpinDateEdit unf TDBSpinDateEdit registriert sind, erscheint 7. Speichern Sie das package ab. I. C++ Builder Bitte benutzen Sie die Datei "DATE_CB.ZIP". 1. Kopieren Sie bitte die Dateien DATEED.OBJ, DATEED.HPP, DATEED.DFM, DATEED.DCR und DATEED.RES in ein beliebiges von Ihnen bevorzugtes Verzeichniss, z.B. C:\CBUILDER\Z_COMP 2. Wählen Sie im Menü Optionen | Komponenten installieren 3. Klicken Sie auf Hinzufügen 4. Geben Sie jetzt das Verzeichniss und DATEED.DCU ein, z.B. C:\CBUILDER\Z_COMP\DATEED.OBJ 5. Klicken Sie jetzt OK 6. Nochmal OK Nach kompilierung der VCL durch Delphi erscheint jetzt in Ihrer Komponentenleiste eine zusätzliche Leiste 'WB', hier finden Sie die neuen Komponenten. Jetzt müssen Sie nur noch diese Komponenten anklicken und danach auf Ihr Formular an der gewünschten Position setzen. >>2. Eigenschaften ( Properties) Folgende Eigenschaften gelten für beide Komponenten TSpinDateEdit, TDBSpinDateEdit Properties : property ActiveColor : TColor, color if focused, default clWindow property Alignment: default taLeftJustify; property Autosize; property +CalendarProperties, Calendarpopup properties : Enabled : boolean, Calendarbutton/Calendarpopup on/off , default on AutoStart : boolean, pops the calendar OnEnter, default False Color : TColor, Calendarpopup color, default clBackground HelpContext : THelpContext, HelpContext for Calendarpopup Position : Position of Calendarform, default posAbove [posAbove,posBelow,posLeft,posRight,posOnTop] SaturdayColor : TColor StartOfWeek : day of week the calendargrid starts on default daySU [daySu,dayMo,dayTu,dayWe,dayTh,dayFr,daySa] SundayColor : TColor; WeekEndSelectable : boolean, WeekEnd ( Sunday/Saturday ) can be selected in Calendar or not, default True WeekOfYear : boolean, calendarweek of year on/off WeekOfYearColor : TColor, color for calendarweek, default clBlack; property Century : boolean, Century on/off default True property Color; property Ctl3D; property DateValue : string, Date in ShortDateFormat property DragCursor; property DragMode; property Enabled; property Font ; property IncrementDate: Increment for Spin or +/-, default iOneDay [iOneDay, iTwoDays, iThreeDays, iOneWeek, iTwoWeek, iOneMonth,iQuarterYear,iHalfYear,iOneYear] property Info : InfoMessageBox about this component property ParentCtl3D; property ParentFont; property ParentShowHint; property PopupMenu; property ReadOnly; property ShowHint; property Spin : boolean, Spinbuttons on/off, default off property TabOrder; property TabStop; property Value: TDateTime, Date in TDateEditFormat property Visible; property OnBeforeChange; property OnChange; property OnClick; property OnDblClick; property OnDragDrop; property OnDragOver; property OnEndDrag; property OnEnter; property OnExit; property OnKeyDown; property OnKeyPress; property OnKeyUp; property OnMouseDown; property OnMouseMove; property OnMouseUp; property OnStartDrag; ( only 32 Bit ) Additional the TDBSpinDateEdit have follows properties DataField DateField , Datatype ftDate, ftDateTime DataSource DataSource for Table or Query >>3. Beschreibung TSpinDateEdit dient der Vereinfachung der Eingaben von Datum. Die standardmäßig mitgelieferten Werkzeuge von Borland sind nur sehr eingeschränk zu gebrauchen ( s. TMaskEdit,TDBEdit). Die Eingabe des Datums erfolgt im ShortDateFormat ( z.B. 10.01.1997 ), wobei die Datumstrennungszeichen automatisch übersprungen werden. Der Anwender kann das Datum auf folgende Arten verändern : 1. Durch manuelle Eingabe von Datumszahlen. Die Komponente fängt automatisch alle Falscheingaben ( wie 13 Monat , 31.11 , 29.2.97, usw ) ab. 2. Mit +/- oder dem jeweiligen Symbol ( Up/Down) des SpinButtons kann das Datum um die vom Entwickler festgelegte Anzahl der Tage erhöht/vermindert werden. 3. Mit dem Klick auf Kalenderbutton oder mit dem DoppelKlick auf das Editierfeld kann ein eingebauter Kalender aufgerufen werden und dort das gewünschte Datum ausgewählt werden. Der Entwickler setzt das gewünschte Datum über die zwei Eigenschaften : 1. DateValue : Hier kann das Datum wie ein normaler Text im ShortDateFormat eingetragen werden. Die Eigenschaft Value wird automatisch gesetzt. Bei Falscheingabe erscheint eine Fehlermeldung. Diese Eigenschaft ist zum Setzen des Datums in der Entwicklungsumgebung gedacht. Während der Programmausführung sollte besser die Value-Eigenschaft benutzt werden, da bei Strings mit falschem Datum eine Fehlermeldung angezeigt wird (wenn die Exception nicht von Ihnen abgefangen wird). Wenn diese Fehlermeldungen Sie genauso stören wie mich ( in fast allen Programmen mit Datumseingabe gehört diese vermutlich zur häufigsten Fehlermeldung überhaupt ) benutzen Sie besser die Value-Eigenschaft, da diese mit Delphidatumsfunktionen direkt arbeitet ( z.B. Now) und so die Umwandlung von Strings zu Datum nicht mehr notwendig ist. Benutzen Sie DateValue in Ihren Programmen als die Stringausgabe des Datum (z.B. Label1.Caption:=SpinDateEdit1.DateValue) und Value als Schnittstelle zu Delphidatumsfunktionen (z.B. SinDateEdit1.Value:=Now). 2. Value : ist vom Typ TDateTime und stellt das Datum als eine Zahl vom Typ double dar. Die Eigenschaft DateValue wird automatisch gesetzt. Diese Eigenschaft kann direkt mit den Datumssystemroutinen gesetzt bzw. von ihnen gelesen werden( z.B. Now, DateToStr,usw. ). Sie können Value auch in der Entwicklungsumgebung setzen, beachten Sie aber bitte das unter Delphi 2.x Value:=0 das Datum 12/30/1899 bedeutet. Da der dezimale Bereich von Delphi für den Zeitanteil benutzt wird, kann man den hier vernachlässigen. Sie können den aber selbstverständlich auch mitführen und verwenden. Die Grenze von Value ist so festgelegt : const {$IFDEF WIN32} DateDelphi =-657434; { Date=01/01/0100 Min} DateDelphiMax=2958465; { Date=12/31/9999} {$ELSE} DateDelphi =1; { Date=01/01/0001 Min} DateDelphiMax=3652059; { Date=12/31/9999} {$ENDIF} Die Grenzen sind von den Delphientwickler so festgelegt worden ( Datumskonventionen von Delphi ), außer die DateDelphi-Konstante füer Delphi 2.x wurde von mir auf das Jahr 100 erhöht, da die Datumssystemroutinen mit kleineren Werten nicht korrekt arbeiten. Die Eigenschaft Century bestimmt ob die Jahrhunderte, unabhänig von der Systemeinstellung, angezeigt/bearbeitet werden können. Dadurch können die Masken unabhängig von den individuellen Windowssystemeinstellungen des Anwenders gestaltet werden. Der Fehler der Datumssystemroutinen bei zweistelliger Jahresangabe automatisch das aktuelle Jahrhundert hinzuzufügen wird abgefangen (s.a. DateValue). Increment ist die Anzahl der Tage um die das Datum vom Anwender durch Drücken von +/- oder bei eingeschaltenem Spin durch Klicken auf das Up/Down-Symbol erhöhen/vermindern kann. Die Eigenschaft Spin macht dem Anwender die Incrementfähigkeit sichtbar. Die Funktion ist die gleiche wie bei +/-. Benutzen Sie das OnBeforeChange-Ereignis um irgendwelche speziellen Aufgaben zu erledigen befor DateValue ein neuer Wert zugewiesen wird. Calendar ist eine nichtmodale Form mit einer Kalendertabelle. CalendarProperties : -Enabled : bestimmt ob der Kalender verfügbar ist. Bei True erscheint das Symbol, der Anwender kann duch das Anklicken des Symbols oder durch Doppelklick auf das Editierfeld den Kalender aufrufen. -AutoStart : startet den Kalender bei OnEnter -Color : Farbe des Calenderfensters -Helpcontext : Helpcontext für Calendarfenster -Position : Position des Calendarfensters auf dem Bildschrirm zum Eingabefeld -SaturdayColor : Farbe der Samstage im Kalender -StartOfWeek : Erster Tag im Kalendergitter -SundayColor : Farbe der Sonntage im Kalender -WeekEndSelectable : ermöglicht eine Sperre der Wochenendtageauswahl im Kalender -WeekOfYear : Kalenderwoche im Calendar -WeekOfYearColor : Farbe für Kalenderwoche Beschreibung des Kalenderfensters: -Kalendergitter - Anzeige des aktuell Monats und Jahres. Durch Doppelclick automatischer Sprung zum aktuellen Datum - Buttons für Monat vor/zurück - Buttons für Jahr vor/zurück - Tabulator/Shift-Tabulator bedeuten Monat vor/zurück - +/- haben die gleiche Funktion wie beim Eingabefeld - Fehlerbeseitigung bei Datumsgrenzüberschreitungen Calendar wird als NichtModal-Form aufgerufen und wird geschlossen durch: -drücken der Return-Taste, Datum wird in das Eingabefeld übernommen -Doppelclick auf den ausgewählten Tag im Kalender, Datum wird in das Eingabefeld übernommen -durch Drücken der ESCAPE-Taste oder durch Anklicken außerhalb des Kalendars, Ergebnis wird nicht übernommen. Die zusätzlichen Eigenschaften der TDBSpinDateEdit-Komponenten dienen der direkten Datenbankanbindung und können zur Anzeige bzw. Manipulation der Daten der verbundenen Felder einer Tabelle oder Anfrage benutzt werden. Andere Eigenschaften sind ohne Änderungen aus der TCustomerEdit-Klasse übernommen worden. >>4. Registrierung Die Demo-Version beinhaltet alle Funktionen der Vollversion, kann aber seit dieser Version nur unter der Borland Entwicklungsumgebung eingesetzt werden. Der Preis für diese Komponenten ist - $15.00 (US) ohne SourceCode - $30.00 (US) mit SourceCode ( >2500 Zeilen). Hinweis : Für C++ Builder Registrierung bitte nur mit Source-Code !!! Bestellen können Sie wie folgt : 1. CompuServe's Online Registration : GO SWREG TSpinDateEdit : -File-ID 14245 without Source -File-ID 14900 with Source TGermDateEdit : -File-ID 15615 without Source -File-ID 15616 with Source Update from TSpinDateEdit : -File-ID 15617 without Source Update from TSpinDateEdit : -File-ID 15618 with Source TSpinDblEdit : -File-ID 12832 without Source -File-ID 14901 with Source 2. Order by sending me an e-Mail. 3. Fill out and send the order form "order.txt" Wenn es keine Möglichkeit gibt die registrierte Version auf elektronischem Wege zu verschicken, addieren Sie bitte 2.00$ für den Versand innerhalb und 3.00$ für den Versand außerhalb Deutschlands hinzu. Registrierte Benutzer bekommen von mir einige Updates im Laufe eines Kalenderjahres. Zusätzlich ist in der registrierten Version die in TSpinDateEdit integrierter Kalender als eigenständige Komponente enthalten. >>5. Neu Version 1.5e ( 08/08/1997) -Key Alt+Down/Up opens the calculator (like ComboBox) suggestion from Thomas Grusche, 100027.231@compuserve.com -Property ActiveColor suggestion from G.Schmitthenner, Calcul-Schmitthenner@t-online.de -Bugfix for Ctl3D = False -BugFix for SelectALL and press Del OnChange Event -inherited properties like BorderStyle now published into Delphi 2+3 too. Version 1.5d - Eventhandler OnBeforeChange Before Value becomes the new value OnCalClick Calculator button click OnCalOpen Calculator open OnCalClose Calculator close OnSpinDownClick Down button click OnSpinUpClick Up button Click - Calendarproperties and CalWB Property WeekEndSelectable True,False Version 1.5c -Clear now working correctly -Day and Month display now allways with 2 Digits e.g. 01/01/1997 independent of WIN.INI Version 1.5b - Delphi 3 support - bugs (e.g. 32 Bit design modus by WMPaint-Message, ...) Version 1.5a - DBSpinDateEdit can be used now without DataSource too - Calculatedfields working exactly as original TDBEdit Version 1.5 - DbCtrlGrid Support ( Delphi 32 ) - Calendar : SundayColor, SaturdayColor properties Version 1.4 -Calendar AutoStart : Enter with VK_TAB now fixed with Timer ( no jump month before open Calendar) -AutoSelect -ParentColor New in Version 1.3 : Thanks to Markus Schwaiger for suggestion of calendarweek -DateedC Unit not necessary -Calendarproperties property Enabled property AutoStart property Color New in 1.3 property HelpContext property Position property StartOfWeek property WeekOfYear New in 1.3 property WeekOfYearColor New in 1.3 not available : property Calendar New CalendarProperties.Enabled property AutoCalendar New CalendarProperties.AutoStart property CalHelpContext New CalendarProperties.HelpContext property CalPosition New CalendarProperties.Position property CalStartOfWeek New CalendarProperties.StartOfWeek property Increment New IncrementDate Bug fixed : -AutoCalendar not jumps to the next month into calendargrid -DB OnEnter,OnExit not longer change Datalink.State to modified without Edit.Change -SpinDateEdit.Height the same like TEdit.Height New in version 1.2 : - much better controls of Spacebar - bug fixes New in version 1.1: (thanks to Richard Haven for his suggestion) - Increment property not longer supported, please use IncrementDate - IncrementDate enumeration property (iOneDay, iTwoDays, iThreeDays, iOneWeek, iTwoWeek, iOneMonth, iQuarterYear,iHalfYear,iOneYear) - AutoCalendar, pops the calendar OnEnter - CalStartOfWeek, day of the week the calendar starts on (daySu,dayMo,dayTu,dayWe,dayTh,dayFr,daySa) - Space bar allow quick enter current date ( or part of date) Puts in the actual and follows parts (cursorposition) of datevalue the respective part of current date. (e.g. datemask is mm/dd/yy. If cursor on month part spacebar fill mm/dd/yy with current date, if cursor on day part spacebar fill dd/yy, if ...) - Clear now working correctly - VK_DELETE,VK_BACK,WM_Cut,WM_Past now working correctly if the complete text selected >>6. Glossar Ich hoffe, Sie kommen mit dieser Beschreibung zurecht. Wenn Sie Fragen oder Anregungen haben schicken Sie mir ein paar Zeilen per eMail. Ich bin für jeden guten Vorschlag dankbar. MfG Ihr Wilhelm Braun eMail : Willi_Braun@compuserve.com >>7. WARRANTY THIS SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" AND WITHOUT WARRANTIES AS TO PERFORMANCE OR MERCHANTABILITY. THESE COMPONENTS ARE PROVIDED WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES WHATSOEVER. BECAUSE OF THE DIVERSITY OF CONDITIONS AND HARDWARE UNDER WHICH THESE COMPONENTS MAY BE USED, NO WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE IS OFFERED. THE USER IS ADVISED TO TEST THESE COMPONENTS THOROUGHLY BEFORE RELYING ON THEM. THE USER MUST ASSUME THE ENTIRE RISK OF USING THESE COMPONENTS. >>8 THESE COMPONENTS ARE SHAREWARE. You may use the shareware version of these components for a 30 day trial period. If you would like to continue to use these components after the 30 day trial period, you are required to purchase the licensed version of these components. >>9. Order/Register form, use only for registration without Compuserve Shareware Register Forum ( GO SWREG ) ORDER FORM TSpinDblEdit/TDBSpinDblEdit TSpinDateEdit/TDBSpinDateEdit TGermDateEdit/TDBGermDateEdit Name: _______________________ Address:_______________________ _______________________ _______________________ _______________________ Product: Delphi 1-3, C++ Builder ____ TSpinDblEdit\TDBSpinDblEdit $15 US ____ TSpinDblEdit\TDBSpinDblEdit Source $30 US ____ TSpinDateEdit\TDBSpinDateEdit $15 US ____ TSpinDateEdit\TDBSpinDateEdit Source $30 US ____ TGermDateEdit\TDBGermDateEdit $25 US ____ TGermDateEdit\TDBGermDateEdit Source $40 US ____ TGermDateEdit\TDBGermDateEdit Update from TSpinDateEdit $10 US ____ TGermDateEdit\TDBGermDateEdit Source Update from TSpinDateEdit Source $10 US Check or money order only. PLEASE MAKE PAYABLE TO "W. BRAUN". Shipping: ____ 3.5" Floppy Disk ( Add $2 postage Germany, other $3) ____ eMail : ____________________________ Mail Address : W. Braun Softwareentwicklung und Vertrieb Bruehlstr. 40 67069 Ludwigshafen Germany Fax : +49 0621 6296754